// 导入 express 模块
const express = require('express');
const cors = require("cors");

// 创建 express 的服务器实例
const app = express();
app.use(cors());
// 解析请求
app.use(express.urlencoded({ extended: true }));

// 由于Session是应用在前后端不分离的项目中，前端代码和后端代码是使用同一台服务器的，因此不存在跨域问题。
// 只有前后端分离的项目才会出现跨域问题
app.use(express.static("./pages"));  // 配置静态目录，托管静态页面资源

// node 实现session的登录认证，需要安装npm install express-session
const session = require("express-session");

// 全局件放在接口前
// 将session注册为全局中间件，前端的每次请求都会经过这个中间件，，处理请求头中的Cookie(前提时请求有Cookie)
app.use(session({
      secret: "miyao", // 加密密钥，用于后续生成Cookie,并且后面验证Cookie的正确性都要用
      resave: false, // 是否重复保存Cookie
      saveUninitialized: false, // 是否保存为初始化的Cookie
})
);


app.get("/test", (req, res) => {
      console.log("用户信息", req.session.user);
      if (req.session.user) {
            res.send("已经登录，给您返回数据");
      } else {
            res.send("请先登录，在获取信息");
      }
});


// 登录接口
app.post("/login", (req, res) => {
      let { username, password } = req.body;
      if (username !== "admin" || password !== "admin") {
            res.send(JSON.stringify({
                  msg: "账号或密码错误",
                  status: 0
            }));
      }
      // 账号密码正确，那就将重要的用户信息，保存在Seeion中，让Session密钥对信息进行加密，生成Cookie返回前端
      req.session.userInfo = req.body;
      res.send(JSON.stringify({
            msg: "登陆成功",
            status: 1,
      }))
});





// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(9000, function () {
      console.log('服务器已启动, 127.0.0.1:9000');
});